import {
  flattenArrayByFlat,
  flattenArray,
} from '@/library/libs/flat-array'

/**
 * @description 数组仅扁平化一层
 * @param {array} args 需要扁平化的数组
 * @param {boolean} useFlat 是否使用原生`flat方法`. default: `true`
 * @returns {array} 扁平后的数组
 * @example
 * flatShallowArray([1, [2, 3], [4, 5, [6, 7]]])
 * // => [1, 2, 3, 4, 5, [6, 7]]
 */
export function shallowFlatArray(arr: unknown[], useFlat = true): unknown[] {
  return useFlat ? flattenArrayByFlat(arr, 1) : flattenArray(arr)
}

/**
 * @description 数组深度扁平化
 * @param {array} args 需要扁平化的数组
 * @param {boolean} useFlat 是否使用原生`flat方法`. default: `true`
 * @returns {array} 扁平后的数组
 * @example
 * ---------------------------
 * flatShallowArray([1, [2, 3], [4, 5, [6, 7]]])
 * // => [1, 2, 3, 4, 5, 6， 7]
 */
export function deepFlatArray(arr: unknown[], useFlat = true): unknown[] {
  return useFlat ? flattenArrayByFlat(arr) : flattenArray(arr, true)
}
